package com.his.emr.print.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * date: 2018年2月14日<br>
 * 去除输入的html片段的startTag和endTag,包含内嵌style<br>
 * 
 * @author Wxg
 *
 */
public class StartAndEnd {
	/**
	 * 取出html的开始标记和结束标记
	 * `+?`: 是`+`对应的忽略优先量词. 参考:《精通正则表达式》中文第3版, 第4章P166"使用忽略优先量词"
	 */
	public static final Pattern TAG_REGEX = Pattern.compile("(<.+?>)(</.+>)");
	
	private String startTagStr;
	private String endTagStr;
	
	private String inputHtmlStr;
	
	public StartAndEnd(String inputHtmlStr){
		this.inputHtmlStr = inputHtmlStr;
	}
	public StartAndEnd done(){
		Document doc = Jsoup.parse(inputHtmlStr);
		Elements eles = doc.body().getAllElements();
		/**
		 * 第0个元素是body本身,这里去第1个元素,即是传入的html片段!
		 */
		Element myWant = eles.get(1);
		myWant.empty();
		Matcher matcher = TAG_REGEX.matcher(myWant.outerHtml());
		if(matcher.matches()){
			startTagStr = matcher.group(1);
			endTagStr = matcher.group(2);
		}
		return this;
	}
	
	public String getStartTagStr() {
		return startTagStr;
	}
	public String getEndTagStr() {
		return endTagStr;
	}
	
	public static void main(String[] args) {
		String p1 = "<p>现病史:患者于半年余前无明显诱因下出现右上腹部疼痛，<span>呈持续性闷痛，</span>逐渐加重，开始无伴有皮肤黄染，未呈桔黄色，<b>无尿色变黄，</b>无呈浓茶样改变，间有发热、无畏寒，无寒战，在当地卫生所就诊，予中药及西药治疗（具体不详）明显好转，无明显皮肤搔痒，无返酸、嗳气，无呕吐，无腹泻。</p>";
		String p2 = "<p style='width:80%;'>现病史:患者于半年余前无明显诱因下出现右上腹部疼痛，<span style='color:red;'>呈<b>持续性</b>闷痛，</span>逐渐加重，开始无伴有皮肤黄染，未呈桔黄色，<b>无尿色变黄，</b>无呈浓茶样改变，</p>";
		StartAndEnd sae = new StartAndEnd(p1).done();
		System.out.printf("\n start: %s, end: %s\n", sae.getStartTagStr(), sae.getEndTagStr());
		sae = new StartAndEnd(p2).done();
		System.out.printf("\n start: %s, end: %s\n", sae.getStartTagStr(), sae.getEndTagStr());
	}
}
